const router = require('koa-router')()
const mysql = require('mysql')
const fs = require('fs')
const path = require('path')

/*
    请求的url的pathname和路由文件中路由方法的第一个参数匹配，并且请求类型也相同时，会执行对应的回调函数

    响应页面：   ctx.render(响应页面的路径（默认寻找views文件夹下的文件）,{页面上填充的数据})

    ctx.render()做的事情：
    读取文件内容，替换<%= property %>标签对应的属性property
    前后端不分离的WEB程序架构：前后端耦合度高

*/
router.get('/', async (ctx, next) => {
  var files = ['1.jpg', '2.jpg', '3.jpg', '4.jpg']

  // 数据库操作
  var con = mysql.createConnection({
    host: '192.168.187.144',
    port: 3306,
    user: 'root',
    password: 'ddd',
    database: 'mydatabase'
  })
  var selectSql = 'select * from chapters'

  var chapterlist = []
  // 把数据库操作写在promise中，前面的await使之变为异步代码中的同步代码
  let res = await new Promise((resolve, reject) => {
    con.query(selectSql, (err, result) => {
      // 回调函数异步执行，必须把响应内容写在回调函数里面，否则得到数组仍然是那个空数组
      if (err) {
        console.log(err)
      } else {
        console.log(result)
        for (var i = 0; i < result.length; i++) {
          chapterlist[i] = {
            chapterName: result[i]['chapterName'],
            imgPath: 'images/' + files[i],
            chapterDes: result[i]['chapterDes'],
            publishTimer: result[i]['publishTimer'],
            author: result[i]['author'],
            views: result[i]['views'],
            // chapterId: i,
            chapterUrl:`http://localhost:3000/detail?chapterId=${i}`
          }
        }
        resolve(chapterlist)
      }
    })
  })
  // await用于等待一个promise对象，如果 await 操作符后的表达式的值不是一个 Promise，则返回该值本身
  await ctx.render('chapterList', { list: res })
})

router.get('/detail', async (ctx, next) => {
  await ctx.render("chapter")
})

router.get('/getDetail', async (ctx, next) => {
  var chapterId = ctx.query.chapterId
  console.log(chapterId)
  var con = mysql.createConnection({
    host: '192.168.187.144',
    port: 3306,
    user: 'root',
    password: 'ddd',
    database: 'mydatabase'
  })
  var selectSql = 'select * from chaptersDetail where chapterId=?'
  var chapterdetail = []
  let res=await new Promise((resolve,reject)=>{con.query(selectSql, [chapterId], (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      
      resolve(result)
    }
  })})
  // con.query(selectSql, [chapterId], (err, result) => {
  //     if (err) {
  //       console.log(err)
  //     } else {
  //       console.log(result)
  //       ctx.body=JSON.stringify(result)
  //       console.log(ctx.body)
  //     }
  //   })
  console.log(res)
  ctx.body=JSON.stringify(res)
})

module.exports = router
